“Persistence” in computing generally describes a characteristic of state (i.e., data) that outlives the process that created it. For example, developers use persistence systems to store data representing a state of an application and other information using an underlying storage system, such as a database system. Persistence architectures have evolved and become more complex due to increasing requirements for scalability. The increased scalability requirements, as well as the rise in variety of data usage patterns, have lead to constraints that may not be solved by using a single database system. This has lead to an explosion of different persistence solutions now available to developers, each having dozens of application programming interfaces and properties. Developers are required to possess a wide range of database skills and languages (i.e., polyglot) in order to be able to cope with modern application persistence. Even knowledge of various databases, frameworks, and APIs may not be enough, developers have to earn experience before being able to apply the right tools for an application's persistence requirements (e.g., highly available vs. highly consistent persistence).